1. The Field of the Invention
The present invention relates to the conversion of sample rate frequencies of digital signals. More particularly, the present invention is directed to a method and apparatus for converting a digital signal having a particular sample rate frequency into a signal having a different, specified sample rate frequency.
2. The Prior State of the Art
As the proliferation of computers and computer technologies continues to expand, the use of computers in traditionally non-computer applications grows. This growth is fueled by the increased power and sophistication of computers, computer applications, and computer peripheral devices. One example of an application area in which computer use is increasingly prevalent are applications that involve the storage and manipulation of analog data signals--such as voice, video, handwriting, etc. For instance, with the introduction of sophisticated digital storage media (such as CD-ROM and DAT) and computer players, digital cameras and multimedia capable microprocessor technologies (such as Intel's .RTM. MMX Pentium.RTM. processors), the use of computers in digital audio and video creation, reproduction and manipulation is becoming increasingly common.
Before a digital computer can store, manipulate or otherwise operate on an analog waveform derived, for instance, from an audio or video signal, the signal must first be transformed into a representative digital form. This transformation is typically referred to as a analog-to-digital conversion, where an analog waveform signal, such as would be present for example with an audio stream, is continuously "sampled" at points along the waveform at predetermined time intervals. Each of these sample points has a corresponding digital data value that corresponds to the magnitude of the analog waveform at that particular point in time. Once in a digital form, the signal can then be manipulated digitally in either computer hardware or software. For instance, the digital signal can be stored on various digital storage media, and then played back or mixed/combined with other digital signals.
The interval at which digital samples are taken when performing the analog-to-digital conversion is typically referred to as the sample rate or the sample frequency. Depending on the particular application, analog signals will be sampled using different sampling rates. Generally, a higher sampling rate corresponds to a higher quality analog to digital conversion. For instance, the sampling frequency used to store high quality digital audio on a standard compact disk (CD-ROM) is 44.1 kHz, whereas the frequency used for storage on a digital audio tape (DAT) is 48.0 kHz.
Often, there is a need to convert a signal sampled at a particular sample frequency into a new signal having the same content, but that has a different sample frequency. For instance, before an audio signal stored on a compact disk (44.1 kHz sampling frequency) can be digitally mixed with an audio signal stored on DAT (48.0 kHz sampling frequency), one of the two signals must first be converted so as to have the same sampling rate as the other, i.e., the sampling rate of one must be increased/decreased to match the rate of the other. Moreover, the conversion must be accomplished so that the quality of the underlying audio signal is preserved, which is difficult because whenever an audio signal's sampling rate is changed, high-frequency noise is introduced. This conversion process is accomplished with what is commonly referred to as a sample rate converter.
Typically, a sample rate converter is presented with an input digital signal having a particular sample rate frequency that needs to be converted to a second sample rate frequency. The input signal is then oversampled (interpolated) by a predetermined interpolation factor so that it has a higher, intermediate sample rate. Since the oversampling/interpolation process typically introduces high frequency noise into the signal, the oversampled signal is then filtered with a low pass filter. The filtered signal is then supplied to a decimator, which removes a number of digital data point samples from the signal based upon a predetermined decimation factor (i.e., the sample rate frequency is decreased). The resulting output signal has the desired sample rate frequency.
Sample rate converters of this sort have been implemented in both hardware and software. However, past approaches typically suffer from a variety of drawbacks--especially when dealing with high quality digital audio or video signals. For instance, if implemented solely with analog electronics, undesirable artifacts are often added into the audio stream, resulting in decreased signal-to-noise ratio. Further, to maintain a high quality output signal, either a very large filter is required, which is difficult to implement in hardware due to memory and/or processing power constraints, or a staged filter approach is used, where a number of filters are combined in multiple interpolation/decimation stages. This approach is also computationally inefficient and expensive, and does not allow a continuous range of input rates to be converted. This is because each different rate conversion requires a filter having a different cutoff frequency. Thus, there must be a different filter for each different conversion ratio that is to be performed, limiting the usefulness and versatility of the converter, especially where different conversions are needed.
Converters implemented in software have also not been entirely satisfactory. Again, the inability of software converters to provide high quality conversions in a digital audio environment often is due to the tradeoffs that must be made to implement a suitable low pass filter. For instance, some existing software sample rate converters either do not suppress the high-frequency noise introduced as a result of the change to the sampling rate, or they inadvertently filter high frequency components of the signal along with the undesirable high frequency noise components. Either type results in an output signal having a degraded quality. Software approaches that attempt to provide a suitable signal quality are computationally inefficient and expensive, and typically cannot handle a continuous range of input rates. Their computational efficiency is so poor that software based converters typically cannot convert signals in real time, and do not support dynamic sample rates on the inputs and outputs.
Given the drawbacks with currently available converters, what is needed is a converter that is capable of producing high quality conversions for digital audio, video or similar signal streams. Moreover, the converter should be capable of being implemented in software, and should be computationally efficient so as to be capable of being used in connection with currently available desktop, general purpose computer systems, without requiring specialized and/or dedicated signal processing hardware. Also, the converter should be capable of handling a continuous range of input and output sample rates.